package cc.rengu.igas.channel.wechat.facade;


import cc.rengu.igas.channel.wechat.facade.request.*;
import cc.rengu.igas.channel.wechat.facade.response.*;
import cc.rengu.igas.channel.wechat.facade.result.Result;

/**
 * 微信商户服务组件
 */
public interface WechatMchntService {


    /**
     * 商户入驻
     *
     * @param wechatCreateMerchantRequest
     * @return 商户入驻结果
     * @throws Exception
     */
    Result<WechatCreateMerchantResponse> createMerchant(WechatCreateMerchantRequest wechatCreateMerchantRequest) throws Exception;

    /**
     * 查询商户信息
     *
     * @param wechatQueryMerchantRequest
     * @return 查询商户信息结果
     * @throws Exception
     */
    Result<WechatQueryMerchantResponse> queryMerchant(WechatQueryMerchantRequest wechatQueryMerchantRequest) throws Exception;

    /**
     * 更新微信商户信息
     *
     * @param updateMerchantRequest
     * @return 更新微信商户信息结果
     * @throws Exception
     */
    Result<WechatUpdateMerchantResponse> updateMerchant(WechatUpdateMerchantRequest updateMerchantRequest) throws Exception;


    /**
     * 实名验证提交申请
     *
     * @param realNameApplymentRequest
     * @return 实名验证申请应答 WechatRealNameApplymentResponse
     * @throws Exception
     */
    Result<WechatRealNameApplymentResponse> realNameApplyment(WechatRealNameApplymentRequest realNameApplymentRequest) throws Exception;


    /**
     * 撤销实名验证申请
     *
     * @param cancelApplymentRequest
     * @return 实名认证申请撤销应答
     * @throws Exception
     */
    Result<WechatCancelApplymentResponse> cancelApplyment(WechatCancelApplymentRequest cancelApplymentRequest) throws Exception;


    /**
     * 查询申请单审核结果
     *
     * @param queryApplymentRequest
     * @return 查询申请单审核结果应答
     * @throws Exception
     */
    Result<WechatQueryApplymentResponse> queryApplyment(WechatQueryApplymentRequest queryApplymentRequest) throws Exception;


    /**
     * 批量查询微信风险商户信息
     *
     * @param wechatRiskMchntQueryRequest
     * @return 批量查询微信风险商户信息应答
     * @throws Exception
     */
    Result<WechatRiskMchntQueryResponse> wechatRiskMchntQuery(WechatRiskMchntQueryRequest wechatRiskMchntQueryRequest) throws Exception;

    /**
     * 获取商户开户意愿确认状态
     *
     * @param realNameAuthQueryRequest 获取商户开户意愿确认状态请求
     * @return 授权状态
     * @throws Exception
     */
    Result<RealNameAuthQueryResponse> realNameAuthQuery(RealNameAuthQueryRequest realNameAuthQueryRequest) throws Exception;

    /**
     * 银行特约商户违规信息查询
     *
     * @param getViolationRequest 银行特约商户违规信息查询请求
     * @return 违规记录信息
     * @throws Exception
     */
    Result<GetViolationResponse> getViolation(GetViolationRequest getViolationRequest) throws Exception;


    /**
     * 新增支付授权目录
     *
     * @param addJsapiPathRequest
     * @return 新增结果
     */
    Result<AddJsapiPathResponse> addJsapiPath(AddJsapiPathRequest addJsapiPathRequest);

    /**
     * 绑定appid
     *
     * @param bindAppidRequest
     * @return 绑定结果
     */
    Result<BindAppidResponse> bindAppid(BindAppidRequest bindAppidRequest);

    /**
     * 优惠费率活动报名
     *
     * @param activityRateDiscountRegistRequest
     * @return 申请单号
     */
    Result<ActivityRateDiscountRegistResponse> activityRateDiscountRegist(ActivityRateDiscountRegistRequest activityRateDiscountRegistRequest);

    /**
     * 优惠费率活动报名结果查询
     *
     * @param activityRegistResultQueryRequest
     * @return 报名处理状态
     */
    Result<ActivityRegistResultQueryResponse> activityRegistResultQuery(ActivityRegistResultQueryRequest activityRegistResultQueryRequest);

    /**
     * 优惠费率活动报名信息修改
     *
     * @param activityRegistInfoModifyRequest
     * @return 报名处理状态
     */
    Result<ActivityRegistInfoModifyResponse> activityRegistInfoModify(ActivityRegistInfoModifyRequest activityRegistInfoModifyRequest);

    /**
     * 终端信息采集
     * @param wechatAcquireTermInfoRequest 终端信息采集请求
     * @return 终端信息采集结果
     */
    Result<WechatAcquireTermInfoResponse> acquireTermInfo(WechatAcquireTermInfoRequest wechatAcquireTermInfoRequest);
}
